package com.zhq.dao;

import com.zhq.bean.User;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

/**
 * @Author:钟豪强
 * @Description:    和用户操作相关的dao
 * @Date Created in  2020-08-14 22:46
 * @Modified By:
 */
public interface BaseUserDao {
    /**(没有像快递一样的两种数据类型,直接用map)
     * 用于查询用户表的用户数量(总数和新增)
     * @return  返回{size:总数,day:新增},没有返回null
     */
    Map<String, Integer> console();

    /**
     * 用于查询所有用户信息
     * @param limit true代表分页,false代表不分页
     * @param offset    SQL语句分页起始索引
     * @param pageNumber    页查询页数
     * @return  返回用户信息的集合,没有信息返回null
     */
    List<User> findAll(boolean limit, int offset, int pageNumber);

    /**
     * 根据用户手机号码查询用户信息(微信端)
     * @param phoneNumber   用户号码
     * @return  返回用户信息
     */
    User findByPhone(String phoneNumber);

    /**
     * 根据取件的数量,对用户进行排名
     * @param type  0表示查询总排名,1表示年排名,2表示月排名
     * @return
     */
    List<User> lazyboard(int type);

    /**
     * 添加新用户
     * @param userName  用户名
     * @param userPhone 用户手机号码
     * @param userNumber    用户身份证
     * @param password  用户密码
     * @return  true代表添加成功
     */
    boolean insert(String userName, String userPhone, String userNumber, String password);

    /**
     * 用于根据id,修改用户信息
      * @param id   用户id
     * @param newUser   新的用户信息(username,userPhone,userNumber,password)
     * @return  返回true代表修改成功
     */
    boolean update(int id, User newUser);

    /**
     * 用于根据id,修改用户信息
     * @param id    用户id
     * @param newUser   新的用户信息(username,password,userNumber)
     * @return
     */
    boolean updateNotPhone(int id, User newUser);

    /**
     * 用于根据用户id,修改上一次登录时间
     * @param id 用户id
     * @param lastLoginTime 上次登录的时间
     * @return true代表修改成功
     */
    boolean updateLastLoginTime(int id, Timestamp lastLoginTime);

    /**
     * 用于根据id,删除用户信息
     * @param id 用户id
     * @return  true代表删除成功
     */
    boolean delete(int id);
}
